
20.11.2011, 23:10
|
Профессор
|
|
Регистрация: 15.10.2011
Сообщений: 213
|
|
как сделать, якоря ссылок AJAX
добрый вечер, сделал аякс на сайт, все замечательно и чертовски забавно, грузится и формочки отправляет, только одна проблема, в адресной строке ничего не пишется, соответственно нет ссылок на конкретные странички, писал без библиотекам поэтому прошу помочь мне не прибегая к библиотекам:
подскажите как сделать в браузерной строке, что бы прописывались ссылки??
потратил пол дня в поисках, гугл отказался помочь мне, единственное понял, что как то якорями это делается, были статьям но там с библиотеками, вообшем ничего толкового не нашел.
желательно и подскажите как и историю реализовать тоже
|
|

21.11.2011, 00:30
|
 |
Люмус, Емаксос Developer!
|
|
Регистрация: 06.05.2010
Сообщений: 677
|
|
Вот пример работает через хеш, еще есть History API.
|
|

21.11.2011, 12:09
|
Профессор
|
|
Регистрация: 15.10.2011
Сообщений: 213
|
|
History API. -- не кросбраузерно
Вот пример погляжу отпишусь
|
|

21.11.2011, 12:50
|
 |
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
(function(window, $){
$.history = {
init: function(callback){
var timer = 100,
self = this,
nohashevent = false,
set = function (a, target) {
if(target) window.location.href = target + '#' + a;
else window.location.hash = a;
},
current = this.current = function(){
var loc = window.location, hash = loc.hash, str = loc+'', i = str.indexOf('#');
i != -1 && (hash = str.slice(i));
return hash.substring(1);
},
init = $.browser.msie && parseInt($.browser.verion, 10) < 8 || document.documentMode < 8 || !('onhashchange' in window) || !('onhashchange' in document.body) ? (nohashevent = true) && function(){
setInterval(function(){
var check = current();
if(check != self.current){
$.browser.msie && addIEHistory(check);
callback(check, self.current);
}
self.current = check;
}, timer)
} : function(){
window.onhashchange = function(){
var update = current();
callback(update, self.current);
self.current = update;
}
};
this.callback = callback;
if ($.browser.opera) history.navigationMode = setOverrideHistoryNavigationMode = 'compatible';
if($.browser.msie && nohashevent){
var IEHistoryFrame = document.createElement('iframe'),
addIEHistory = function(hash){
if(hash==IEHistoryFrame.contentWindow.curHash) return;
IEHistoryFrame.contentWindow.document.open();
IEHistoryFrame.contentWindow.document.write('<scr'+'ipt>window.curHash = "'+hash+'"; parent.location.hash = "'+hash+'"</scr'+'ipt>');
IEHistoryFrame.contentWindow.document.close();
};
IEHistoryFrame.src = 'javascript:true;';
IEHistoryFrame.style.display = 'none';
document.body.appendChild(IEHistoryFrame);
}
this.push = function(update, target) {
if (this.current != update) set(update, target);
return true
}
init();
//callback(current());
}
};
}(this, this.jQuery));
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|

21.11.2011, 14:46
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Nekromancer, это вы для него написали?
|
|

21.11.2011, 15:11
|
 |
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Нет, это у меня был скрипт, написал года полтора назад, пару раз модифицировал. Просто скопировал его.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|

21.11.2011, 16:42
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
А я уже был готов удивляться вашей самоотверженности...
|
|

21.11.2011, 16:44
|
 |
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Не, как нибудь в другой раз, не в рабочее время 
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|

21.11.2011, 19:08
|
Профессор
|
|
Регистрация: 15.10.2011
Сообщений: 213
|
|
Nekromancer ого спасибо, мне теперь аж на месяц в перед разбираться)
|
|

22.11.2011, 22:20
|
Профессор
|
|
Регистрация: 15.10.2011
Сообщений: 213
|
|
почему когда я пишу
window.location.hash = 'yakor'
или
document.location.hash = 'yakor'
во всех браузерах кроме ИЕ, историю запоминает, как сделать что бы в ИЕ запоминало?
|
|
|
|